The invention relates generally to source code debugging methods and apparatus, and in particular, to the debugging of software programs using trace points set using a debugging tool.
As computer programs become increasingly complex, the programs will, more likely than not, contain errors or "bugs " that prevent the proper performance and operation of the program in its intended manner. The program is then debugged, which is the process of locating and correcting the errors in the program. In complex programs, the debugging process be quite difficult and as a result one approach to debugging software uses the insertion of break points at locations within the code. The execution of the source code program then halts whenever a break point is encountered to allow the programmer to observe the state of certain variables and, accordingly, the behavior of the program at the break point.
In certain applications, stopping the program at a break point can be quite disruptive to the system. Thus, for example, in a large shared data storage subsystem such as the EMC Symmetrix series of products, halting the program in effect stops the entire data reading, writing, and caching process. In this instance, not only can the flow of data be disrupted for on the order of several minutes, or more, but the behavior of the system, and hence the analysis of an error, can be completely masked by the system stoppage because, for example, other external subsystems may then go into a recovery mode.
It has been known to store data relating to trace events in buffer memories within the Symmetrix device for later analysis. This approach has the advantage of not interrupting the system while at the same time collecting data, as necessary, for later review and analysis. Such a system typically does not enable the user to dynamically alter or change the system software and trace points, or to contemporaneously analyze the system software as a program continues.
As a result, in accordance with the present invention, a debugging system tool and method can be provided which enable immediate and certain interaction, on line, with the software program operating, for example, in a large shared data storage system. In addition, the method and apparatus of the current invention advantageously provide online access to debug the system while, at the same time, not significantly disrupting operation of the system so as to mask any error occurring in the operation of the source code.